package com.urbanflow.vinci.main;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;



public class HoraireModele {
	private Arret arretDeservi;
	private Ligne ligne;
	private Date horaire;
	private String jour;
	public Date getHoraire() {
		return horaire;
	}
	public void setHoraire(Date horaire) {
		this.horaire = horaire;
	}
	public Ligne getLigne() {
		return ligne;
	}
	public void setLigne(Ligne ligne) {
		this.ligne = ligne;
	}
	public Arret getArretDeservi() {
		return arretDeservi;
	}
	public void setArretDeservi(Arret arretDeservi) {
		this.arretDeservi = arretDeservi;
	}
	public String getJour() {
		return jour;
	}
	public int getJourInt() {
		switch(jour){
		case EnumJour.DIMANCHE:
			return Calendar.SUNDAY;
		case EnumJour.LUNDI:
			return Calendar.MONDAY;
		case EnumJour.MARDI:
			return Calendar.TUESDAY;
		case EnumJour.MERCREDI:
			return Calendar.WEDNESDAY;
		case EnumJour.JEUDI:
			return Calendar.THURSDAY;
		case EnumJour.VENDREDI:
			return Calendar.FRIDAY;
		case EnumJour.SAMEDI:
			return Calendar.SATURDAY;
		default:
			return 0;
		}
	}
	
	public void setJour(String jour) {
		this.jour = jour;
	}	
	public Horaire getNouvelHoraire(Date date, Integer pas) {
		Horaire monHoraire = new Horaire();
		monHoraire.setArretDeservi(arretDeservi);
		monHoraire.setLigne(ligne);
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
		if(this.getJourInt() == dayOfWeek) {
			Date theDate = (Date) date.clone();
			theDate.setHours(horaire.getHours());
			theDate.setMinutes(horaire.getMinutes());
			theDate.setSeconds(horaire.getSeconds());
			monHoraire.setDate(theDate);
		} else {
			c.add(Calendar.DAY_OF_MONTH, 1);
			if(pas > 0)
				return getNouvelHoraire(c.getTime(), pas - 1 );
			else
				return null;
		}
		return monHoraire;
	}
	
}
